package com.tbit.uqbike.webmanager.dao.capital;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tbit.config.datasource.DataSource;
import com.tbit.uqbike.object.pojo.CardUseLog;
import com.tbit.uqbike.object.pojo.dto.CardUsageDTO;
import com.tbit.uqbike.object.pojo.vo.CardUsageSummaryVO;
import com.tbit.uqbike.object.pojo.vo.CardUsageVO;
import com.tbit.uqbike.object.pojo.vo.CardUseLogVO;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 卡券使用记录
 *
 * @Author:BUGTian
 * @DATE: 2023/1/6
 */
@DS(DataSource.CAPITAL)
public interface CardUseLogDao extends BaseMapper<CardUseLog> {
    /**
     * 查询卡券使用记录
     *
     * @param brandId       品牌id
     * @param buyAccountIds 。
     * @param useAccountIds 。
     * @param cardType      。
     * @param startTime     。
     * @param endTime       。
     * @return 。
     */
    List<CardUseLogVO> queryList(@Param("brandId") Integer brandId, @Param("buyAccountIds") String buyAccountIds, @Param("useAccountIds") String useAccountIds, @Param("cardType") Integer cardType, @Param("startTime") Date startTime, @Param("endTime") Date endTime);

    /**
     * 查询卡券使用记录数量
     *
     * @param brandId       品牌id
     * @param buyAccountIds 。
     * @param useAccountIds 。
     * @param cardType      。
     * @param startTime     。
     * @param endTime       。
     * @return 。
     */
    int queryListCount(@Param("brandId") Integer brandId, @Param("buyAccountIds") String buyAccountIds, @Param("useAccountIds") String useAccountIds, @Param("cardType") Integer cardType, @Param("startTime") Date startTime, @Param("endTime") Date endTime);

    /**
     * 查询卡券使用记录
     * @param dto dto
     * @return List
     */
    List<CardUsageVO> getCardUsage(CardUsageDTO dto);

    /**
     * 统计卡券使用次数
     * @param dto dto
     * @return CardUsageSummaryVO
     */
    CardUsageSummaryVO groupByCardType(CardUsageDTO dto);
}
